home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 001 / qzapsrc / !QZap_c_QDataLoad < prev    next >
Encoding:
Text File  |  1994-11-13  |  2.4 KB  |  76 lines

  1. /*
  2.  * Dataload.c
  3.  */
  4.  
  5. #define QDataload
  6.  
  7. #include "osfile.h"
  8. #include "QMain.h"
  9. #include "QDataload.h"
  10. #include "QInitialise.h"
  11. #include "QCreatenewview.h"
  12.  
  13. void Dataload(wimp_block *Block)
  14. {
  15.   int dummy;
  16.   int Objtype;
  17.   int Loadaddr;
  18.   int Execeddr;
  19.   bits Attr;
  20.   int Filetype;
  21.   char *fname;
  22.  
  23.   if (Block->message.data.data_xfer.w==wimp_ICON_BAR_LEFT) { /* WTF? */
  24.     if (Block->message.data.data_xfer.i==IconbarIconHandle) {
  25.       if (Loadedtype!=-1) {
  26.         osfind_close(Loadedfile);
  27.         for (dummy=0; dummy<MaxViewers; dummy++) {
  28.           if (Viewers[dummy] != NULL) {
  29.             wimp_close_window(Viewers[dummy]);
  30.             wimp_delete_window(Viewers[dummy]);
  31.             Viewers[dummy]=NULL;
  32.           };
  33.         }
  34.       }
  35.       if (xosfind_openin(osfind_NO_PATH,
  36.             (char *) &(Block->message.data.data_xfer.file_name),
  37.             (char *) NULL, &Loadedfile)==NULL){
  38.         Loadedtype=Block->message.data.data_xfer.file_type;
  39.         Objtype=osfile_read_stamped_no_path (
  40.             (char *) &(Block->message.data.data_xfer.file_name),
  41.             &Loadaddr, &Execeddr, &Loadedsize, &Attr, &Filetype);
  42.         /* Loadedsize=Block->message.data.data_xfer.est_size; */
  43.         Block->message.your_ref=Block->message.my_ref;
  44.         Block->message.action=message_DATA_LOAD_ACK;
  45.         wimp_send_message(19, &(Block->message), Block->message.sender);
  46.         Selectionstart=0; Selectionend=1;
  47.         fname=(char *)&(Block->message.data.data_xfer.file_name);
  48.         Wviewer->title_data.indirected_text.text=Wtitles[0];
  49.         for (dummy=0; fname[dummy]>31; dummy++) {
  50.           Wviewer->title_data.indirected_text.text[dummy]=fname[dummy];
  51.         }
  52.         Wviewer->title_data.indirected_text.text[dummy++]=' ';
  53.         MainViewNOffset=dummy;
  54.         Wviewer->title_data.indirected_text.text[dummy++]='1';
  55.         Wviewer->title_data.indirected_text.text[dummy]=0;
  56.         Wviewer->extent.x0=0;
  57.         Wviewer->extent.y0=0-(Loadedsize*Charheight/4);
  58.         Wviewer->extent.x1=Xwidth*Charwidth;
  59.         Wviewer->extent.y1=0;
  60.           /* Note that size is charheight * number of 4-byte words in file */
  61.         if ((Loadedtype>=0) && (Loadedtype<=0xFFF)) {
  62.           if (Addresses[Loadedtype]!=-1) {
  63.             Baseaddress=Addresses[Loadedtype];
  64.           } else {
  65.             Baseaddress=Defaultbaseaddr;
  66.           }
  67.         } else {
  68.           Baseaddress=Loadaddr;
  69.         }
  70.         Createnewview(0);
  71.       }
  72.     }
  73.   }
  74. }
  75.  
  76.